home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C++ / Applications / Nuntius 1.2 / src / Nuntius / TCPPB.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-02-20  |  5.5 KB  |  263 lines  |  [TEXT/MPS ]

  1. /* 
  2.     TCPPB.h    
  3.     C definitions of parameter block entries needed for TCP calls
  4.  
  5.     Copyright Apple Computer, Inc. 1988-91
  6.     All rights reserved
  7.     Modifications by Steve Falkenburg, Apple MacDTS 8/91
  8.     
  9. */
  10.  
  11. /* conditional #include -->SJF<-- */
  12.  
  13. #ifndef __TCPPB__
  14. #define __TCPPB__
  15.  
  16. /* added for misc. definitions -->SJF<-- */
  17. #ifndef __MACTCPCOMMONTYPES__
  18. #include <MacTCPCommonTypes.h>
  19. #endif
  20.  
  21. /* Command codes */
  22.  
  23. #define TCPCreate            30
  24. #define    TCPPassiveOpen        31
  25. #define TCPActiveOpen        32
  26. #define TCPSend                34
  27. #define TCPNoCopyRcv        35
  28. #define TCPRcvBfrReturn        36
  29. #define TCPRcv                37
  30. #define TCPClose            38
  31. #define TCPAbort            39
  32. #define TCPStatus            40
  33. #define TCPExtendedStat        41
  34. #define TCPRelease            42
  35. #define TCPGlobalInfo        43
  36. #define TCPCtlMax            49
  37.  
  38. typedef enum TCPEventCode {
  39.     TCPClosing = 1,
  40.     TCPULPTimeout,
  41.     TCPTerminate,
  42.     TCPDataArrival,
  43.     TCPUrgent,
  44.     TCPICMPReceived,
  45.     lastEvent = 32767
  46. } TCPEventCode;
  47.  
  48. typedef enum TCPTerminationReason {
  49.     TCPRemoteAbort = 2,
  50.     TCPNetworkFailure,
  51.     TCPSecPrecMismatch,
  52.     TCPULPTimeoutTerminate,
  53.     TCPULPAbort,
  54.     TCPULPClose,
  55.     TCPServiceError,
  56.     lastReason = 32767
  57. } TCPTerminationReason; 
  58.  
  59. #ifdef THINK_C
  60. typedef ProcPtr TCPNotifyProc;
  61. #else
  62. typedef pascal void (*TCPNotifyProc) (
  63.         StreamPtr tcpStream,
  64.         unsigned short eventCode,
  65.         Ptr userDataPtr,
  66.         unsigned short terminReason,
  67.         struct ICMPReport *icmpMsg);
  68. #endif
  69.  
  70. typedef void (*TCPIOCompletionProc) (struct TCPiopb *iopb);
  71.  
  72. typedef unsigned short tcp_port;
  73.  
  74. typedef unsigned char byte;
  75.  
  76. enum {                    /* ValidityFlags */
  77.     timeoutValue = 0x80,
  78.     timeoutAction = 0x40,
  79.     typeOfService = 0x20,
  80.     precedence = 0x10
  81. };
  82.  
  83. enum {                    /* TOSFlags */
  84.     lowDelay = 0x01,
  85.     throughPut = 0x02,
  86.     reliability = 0x04
  87. };
  88.  
  89. typedef struct TCPCreatePB {
  90.     Ptr         rcvBuff;
  91.     unsigned long rcvBuffLen;
  92.     TCPNotifyProc     notifyProc;
  93.     Ptr         userDataPtr;
  94. }TCPCreatePB;
  95.  
  96. typedef struct TCPOpenPB {
  97.     byte ulpTimeoutValue;
  98.     byte ulpTimeoutAction;
  99.     byte validityFlags;
  100.     byte commandTimeoutValue;
  101.     ip_addr remoteHost;
  102.     tcp_port remotePort;
  103.     ip_addr localHost;
  104.     tcp_port localPort;
  105.     byte tosFlags;
  106.     byte precedence;
  107.     Boolean dontFrag;
  108.     byte timeToLive;
  109.     byte security;
  110.     byte optionCnt;
  111.     byte options[40];
  112.     Ptr userDataPtr;
  113. }TCPOpenPB;
  114.     
  115. typedef struct TCPSendPB {
  116.     byte ulpTimeoutValue;
  117.     byte ulpTimeoutAction;
  118.     byte validityFlags;
  119.     Boolean pushFlag;
  120.     Boolean urgentFlag;
  121.     Ptr wdsPtr;
  122.     unsigned long sendFree;
  123.     unsigned short sendLength;
  124.     Ptr userDataPtr;
  125. }TCPSendPB;
  126.     
  127.  
  128. typedef struct TCPReceivePB {        /* for receive and return rcv buff calls */
  129.     byte commandTimeoutValue;
  130.     byte filler;
  131.     Boolean markFlag;
  132.     Boolean urgentFlag;
  133.     Ptr rcvBuff;
  134.     unsigned short rcvBuffLen;
  135.     Ptr rdsPtr;
  136.     unsigned short rdsLength;
  137.     unsigned short secondTimeStamp;
  138.     Ptr userDataPtr;
  139. }TCPReceivePB;
  140.     
  141. typedef struct TCPClosePB {
  142.     byte ulpTimeoutValue;
  143.     byte ulpTimeoutAction;
  144.     byte validityFlags;
  145.     Ptr userDataPtr;
  146. }TCPClosePB;
  147.     
  148. typedef struct HistoBucket {
  149.     unsigned short value;
  150.     unsigned long counter;
  151. };
  152.     
  153. #define NumOfHistoBuckets    7
  154.  
  155. typedef struct TCPConnectionStats {
  156.     unsigned long dataPktsRcvd;
  157.     unsigned long dataPktsSent;
  158.     unsigned long dataPktsResent;
  159.     unsigned long bytesRcvd;
  160.     unsigned long bytesRcvdDup;
  161.     unsigned long bytesRcvdPastWindow;
  162.     unsigned long  bytesSent;
  163.     unsigned long bytesResent;
  164.     unsigned short numHistoBuckets;
  165.     struct HistoBucket sentSizeHisto[NumOfHistoBuckets];
  166.     unsigned short lastRTT;
  167.     unsigned short tmrSRTT;
  168.     unsigned short rttVariance;
  169.     unsigned short tmrRTO;
  170.     byte sendTries;
  171.     byte sourchQuenchRcvd;
  172. }TCPConnectionStats;
  173.     
  174. typedef struct TCPStatusPB {
  175.     byte ulpTimeoutValue;
  176.     byte ulpTimeoutAction;
  177.     long unused;
  178.     ip_addr remoteHost;
  179.     tcp_port remotePort;
  180.     ip_addr localHost;
  181.     tcp_port localPort;
  182.     byte tosFlags;
  183.     byte precedence;
  184.     byte connectionState;
  185.     unsigned short sendWindow;
  186.     unsigned short rcvWindow;
  187.     unsigned short amtUnackedData;
  188.     unsigned short amtUnreadData;
  189.     Ptr securityLevelPtr;
  190.         /* HEMS-HEMP stats */
  191.     unsigned long sendUnacked;
  192.     unsigned long sendNext;
  193.     unsigned long congestionWindow;
  194.     unsigned long rcvNext;
  195.     unsigned long srtt;
  196.     unsigned long lastRTT;
  197.     unsigned long sendMaxSegSize;
  198.     struct TCPConnectionStats *connStatPtr;
  199.     Ptr userDataPtr;
  200. }TCPStatusPB;
  201.     
  202. typedef struct TCPAbortPB {
  203.     Ptr userDataPtr;
  204. }TCPAbortPB;
  205.     
  206. typedef struct TCPParam {
  207.     unsigned long tcpRtoA;
  208.     unsigned long tcpRtoMin;
  209.     unsigned long tcpRtoMax;
  210.     unsigned long tcpMaxSegSize;
  211.     unsigned long tcpMaxConn;
  212.     unsigned long tcpMaxWindow;
  213. }TCPParam;
  214.  
  215. typedef struct TCPStats {
  216.     unsigned long tcpConnAttempts;
  217.     unsigned long tcpConnOpened;
  218.     unsigned long tcpConnAccepted;
  219.     unsigned long tcpConnClosed;
  220.     unsigned long tcpConnAborted;
  221.     unsigned long tcpOctetsIn;
  222.     unsigned long tcpOctetsOut;
  223.     unsigned long tcpOctetsInDup;
  224.     unsigned long tcpOctetsRetrans;
  225.     unsigned long tcpInputPkts;
  226.     unsigned long tcpOutputPkts;
  227.     unsigned long tcpDupPkts;
  228.     unsigned long tcpRetransPkts;
  229. }TCPStats;
  230.     
  231. typedef struct TCPGlobalInfoPB {
  232.     struct TCPParam *tcpParamPtr;
  233.     struct TCPStats *tcpStatsPtr;
  234.     StreamPtr **tcpCDBTable; // CPS: StreamPtr *tcpCDBTable[];
  235.     Ptr userDataPtr;
  236.     unsigned short maxTCPConnections;
  237. }TCPGlobalInfoPB;
  238.     
  239. typedef struct TCPiopb {
  240.     char                 fill12[12];
  241.     TCPIOCompletionProc    ioCompletion;
  242.     short                 ioResult;
  243.     char                 *ioNamePtr;        
  244.     short                 ioVRefNum;        
  245.     short                ioCRefNum;            
  246.     short                 csCode;
  247.     StreamPtr             tcpStream;                
  248.     union {
  249.         struct TCPCreatePB create;
  250.         struct TCPOpenPB open;
  251.         struct TCPSendPB send;
  252.         struct TCPReceivePB receive;
  253.         struct TCPClosePB close;
  254.         struct TCPAbortPB abort;
  255.         struct TCPStatusPB status;
  256.         struct TCPGlobalInfoPB globalInfo;
  257.         } csParam;
  258. }TCPiopb;
  259.     
  260.  
  261. #endif      /* conditional include -->SJF<-- */
  262.  
  263.